ACTOR MatryoshkaMissile
{
   Radius 6
   Height 9
   Speed 70
   Damage 28
   Obituary "%o was slammed by %k's load of chaingun missiles."
   PROJECTILE
   +THRUGHOST
   +EXPLODEONWATER
   Scale 0.6
   var int User_Burnout;
   States
   {
   Spawn:
      CGRV A 0 NoDelay A_PlaySound("Weapons/KatyushaLoop",5,0.4,1)
   Roflcopter:
      CGRV AB 2 Bright A_SpawnItemEx("ComradeTrail",-10+frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(-2.0,-1.0),frandom(0.3,-0.3),frandom(0.3,-0.3),frandom(25.0,-25.0),SXF_CLIENTSIDE,40)
	  CGRV A 0 A_PlaySound("Weapons/MatryoshkaMissileFire",6,0.7)
	  CGRV A 0 A_JumpIfInTargetInventory("CaliberUpgrade",1,3)
      CGRV A 0 A_SpawnItemEx("MatryoshkaTracer",0,0,0,velx+frandom(2.0,-2.0),vely+frandom(3.0,-3.0),velz+frandom(3.0,-3.0),0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0)
	  CGRV A 0 A_Jump(256,"RoflCopter")
      CGRV A 0 A_SpawnItemEx("MatryoshkaCaliberTracer",0,0,0,velx+frandom(2.0,-2.0),vely+frandom(3.0,-3.0),velz+frandom(3.0,-3.0),0,SXF_ABSOLUTEMOMENTUM|SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS,0)
	  Loop
   Death:
	  TNT1 A 0 A_JumpIfInTargetInventory("CaliberUpgrade",1,"BlastDeath")
	  TNT1 A 0 A_StopSound(5)
	  TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
	  TNT1 A 0 A_PlaySound("Weapons/SawBounce",6,0.3)
	  TNT1 A 0 A_SetUserVar("User_BurnOut",random(25,15))
   DeathLoop:
	  CGRV C 0 A_SetUserVar("User_BurnOut",User_Burnout - 1)
	  CGRV C 0 A_JumpIf(User_Burnout <= 0, "PhaseTwo")
	  CGRV C 3 A_SpawnItemEx("CasingSmoke", -10+frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(-0.1,0.1),frandom(-0.1,0.1),frandom(0.25,0.75),frandom(0.0,360.0), SXF_CLIENTSIDE, 40)
	  Loop
   PhaseTwo:
      CGRV C 105 A_CheckSight("DopePope")
	  Loop
   DopePope:
      CGRV C 1 A_FadeOut(0.1)
	  Loop
   BlastDeath:
      TNT1 A 0 A_PlaySound("Weapons/LarpaExp",5)
      TNT1 A 0 A_Explode(56,128,0)
      TNT1 A 0 A_SpawnItemEx("PelletExplode",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      TNT1 BCD 4
      stop
   }
}

ACTOR MatryoshkaTracer : FastProjectile
{
   Radius 3
   Height 5
   MissileHeight 5
   Speed 180
   Damage (35*random(1,3))
   Obituary "%o, thanks to %k, knows now the definition of inception."
   PROJECTILE
   +THRUGHOST
   MissileType "MatryoshkaTracerTrail"
   States
   {
   Spawn:
   TNT1 A 1
   Loop
   Death:
   TNT1 A 1 A_SpawnItemEx("BulletPuff",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
   Stop
   }
}

ACTOR MatryoshkaCaliberTracer : MatryoshkaTracer
{
   Damage (70*random(1,3))
   States
   {
   Spawn:
   TNT1 A 1
   Loop
   Death:
   TNT1 A 1 A_SpawnItemEx("CaliberPuff",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
   Stop
   }
}

ACTOR MatryoshkaTracerTrail
{
	+NOINTERACTION
	+NOGRAVITY
	+CLIENTSIDEONLY
	Renderstyle Add
	Scale 0.2
	States
	{
	Spawn:
    10BA A 0 NoDelay A_SetScale(ScaleX-0.04,ScaleY-0.04)
	10BA A 0 A_JumpIf(ScaleX <= 0,"NULL")
	10BA A 1 A_FadeOut(0.25)
	Loop
	}
}

ACTOR MatryovenantMissile
{
   Radius 6
   Height 9
   Speed 70
   Damage 24
   Obituary "%o was chased and obliterated by %k's most annoying missiles in the world."
   PROJECTILE
   +THRUGHOST
   +EXPLODEONWATER
   +SEEKERMISSILE
   +SCREENSEEKER
   //SeeSound "Weapons/MatryoshkaAAAAAHH"
   Scale 0.6
   var int User_KickIn;
   States
   {
   Spawn:
      MRVS A 0 NoDelay A_PlaySound("Weapons/KatyushaLoop",5,0.4,1)
	  MRVS A 0 A_PlaySound("Weapons/MatryoshkaAAAAAHH",6,0.3,1)
	  MRVS A 0 A_SetUserVar("User_KickIn",random(1,5))
   Roflcopter:
      MRVS A 0 A_JumpIf(User_KickIn <= 0,"Maocopter")
	  MRVS A 0 A_SetUserVar("User_KickIn",User_KickIn - 1)
      MRVS A 2 Bright A_SpawnItemEx("ComradeTrail",-10+frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(-2.0,-1.0),frandom(0.3,-0.3),frandom(0.3,-0.3),frandom(25.0,-25.0),SXF_CLIENTSIDE,40)
	  Loop
   Maocopter:
      MRVS A 0 A_SeekerMissile(4,8,SMF_PRECISE|SMF_CURSPEED,100,10)
      MRVS A 0 A_SeekerMissile(20,40,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,50,1)
      MRVS A 2 Bright A_SpawnItemEx("ComradeTrail",-10+frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(1.0,-1.0),frandom(-2.0,-1.0),frandom(0.3,-0.3),frandom(0.3,-0.3),frandom(25.0,-25.0),SXF_CLIENTSIDE,40)
	  Loop
   Death:
   	  TNT1 A 0 A_StopSound(6)
      TNT1 A 0 A_JumpIfInTargetInventory("CaliberUpgrade",1,"CaliberDeath")
      TNT1 A 0 A_PlaySound("Weapons/LarpaExp",5)
      TNT1 A 0 A_Explode(60,128,0)
      TNT1 A 0 A_SpawnItemEx("PelletExplode",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      TNT1 BCD 4
      stop
   CaliberDeath:
      TNT1 A 0 A_PlaySound("Weapons/BustExplo",5)
      TNT1 A 0 A_Explode(150,128)
      TNT1 A 0 A_SpawnItemEx("MissileExplode",0,0,0,0,0,0,0,128,0)
      TNT1 BCD 5
      stop
   }
}